package juego;

import mundo.GestorMapas;
import interfaz.*;
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import XML.*;


/** @author Miguel **/
public class Juego {
    private GestorMapas gestor;

//    <editor-fold defaultstate="collapsed" desc="Constructor">
//  Inicializa las variables de juego
    public Juego() {
        //    Inicializa el gestor de mapas
        //    Gestor se banca la creacion del dibujador, bandos, batallones actuales, turno y turnoJugador

       XML_DeParser.deserializacionPersonajes();
       XML_DeParser.deserializacionArmas();
       XML_DeParser.deseralizacionAldea();

        gestor = new GestorMapas();
        
    }

    public GestorMapas getGestor() {
        return gestor;
    }
//    </editor-fold>

//    <editor-fold defaultstate="collapsed" desc="Getters">
    public int getDirAldea() {
        return gestor.getControlador().getDirAldea();
    }

    public int getDirMouse(int xMouse, int yMouse){
        return gestor.getControlador().transformarMouse(xMouse, yMouse);
    }

    public int[] inMouseOutCelda(int xMouse, int yMouse){
       return gestor.getControlador().inMouseOutCelda(xMouse, yMouse);
   }

    public Object getContentCelda(int x, int y){
       return gestor.getContentCelda(x, y);
   }

    public void getJugador(LaVentana ventana){
        gestor.getJugador(ventana);
    }

       public String getManutencion() {
        return gestor.actualizarManutencion();
    }

    public String getCuracion() {
        return gestor.actualizarCuracion();
    }

    public String getAtacar() {
        return gestor.getAtacar();
    }
    //    </editor-fold>

//    <editor-fold defaultstate="collapsed" desc="Jugabilidad">
     public void mover(int dir) {
        gestor.mover(dir);
    }

    public void comprarArmas(int dir, LaVentana ventana) {
        gestor.comprarArmas(dir, ventana);
    }

    public void comprarPersonajes(int dir, LaVentana ventana) {
        gestor.comprarPersonajes(dir, ventana);
    }

    public void cambiar() {
        gestor.cambiar();
    }

    public boolean atacar(int dir) {
        return gestor.atacar(dir);
    }


    public void cambiarTurno() {
        gestor.getControlador().cambiarTurno();
    }

    public boolean cambiarNivel(){
        return gestor.cambiarNivel();
    }
    //    </editor-fold>

//    <editor-fold defaultstate="collapsed" desc="Validaciones">
    public boolean hayEnemigoAdyacente(int direccion) {
        return gestor.getControlador().hayEnemigoAdyacente(direccion);
    }

    public boolean hayEnemigoAdyacente() {
        return gestor.getControlador().hayEnemigoAdyacente();
    }

    public boolean hayAldeaAdyacente(int direccion) {
        return gestor.getControlador().hayAldeaAdyacente(direccion);
    }

//    public boolean verificarFinJuego() {
//        return gestor.verificarFinJuego();
//
//    }
    //    </editor-fold>

//    <editor-fold defaultstate="collapsed" desc="Impresion">
    public boolean deserializar(String nombreArch){
        return gestor.deserializar(nombreArch);
    }

    public void MostrarMapa(Graphics2D graph2D, ImageObserver observer) {
        gestor.MostrarMapa(graph2D, observer);
    }

    public void sacarInfoBando() {
        gestor.getControlador().sacarInfoBando();
    }

    public String sacarInfoBando2(int i) {
        return gestor.getControlador().sacarInfoBando2(i);
    }

    public void imprimirFinJuego(LaVentana ventana){
        int ganador=gestor.getGanador();
        if ( ganador == 1) {
            int turnoTU=gestor.getTurnoJugador();
            if (turnoTU==ganador){
                JOptionPane.showMessageDialog(ventana, "¡Ganaste pe!\n ¡Que pro eres!\n"
                        + "Mateo Pumacahua y su ejercito fue vencido."
                        + "\nLos realistas ganan y la rebelion fue un fracaso.",
                        "GANADOR", JOptionPane.INFORMATION_MESSAGE);
            }
             else {
                    JOptionPane.showMessageDialog(ventana, "¡Perdiste!\nGanó la computadora\n"
                        + "Mateo Pumacahua y su ejercito fue vencido."
                        + "\nLos realistas ganan y la rebelion fue un fracaso.",
                        "GANADOR", JOptionPane.INFORMATION_MESSAGE);
                        PopUp popup = new PopUp(ventana, true);
             }

        } else {
            int turnoTU=gestor.getTurnoJugador();
            if (turnoTU==ganador){
                JOptionPane.showMessageDialog(ventana, "¡Ganaste!\n¡Que pro eres!\n"
                        + "Pumacahua venció."
                        + "\nLos rebeldes han dado un gran paso para la independencia del Perú.",
                        "GANADOR", JOptionPane.INFORMATION_MESSAGE);
            }
             else {
                    JOptionPane.showMessageDialog(ventana, "¡Perdiste pe!\n Ganó la computadora\n"
                        + "Pumacahua venció."
                        + "\nLos rebeldes han dado un gran paso para la independencia del Perú.",
                        "GANADOR", JOptionPane.INFORMATION_MESSAGE);
             }
        }
	System.out.println("Ganador: " + ganador + " TurnoJugador: " + gestor.getTurnoJugador());
    }
    //    </editor-fold>

}
